//package com.bestcem.xm.member.job.config;
//
//import com.bestcem.xm.member.job.MemberLabelStatisticJob;
//import com.bestcem.xm.member.job.MemberWechatInfoSyncJob;
//import lombok.extern.slf4j.Slf4j;
//import org.quartz.*;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Configuration;
//
//import javax.annotation.PostConstruct;
//import javax.annotation.Resource;
//
///**
// * 联系人定时任务触发配置
// *
// * @author wangyf <yf.wang@idiaoyan.com>
// * @version v1.0
// * @date 2021/7/16 14:22
// */
//@Slf4j
//@Configuration
//public class MemberJobConfig {
//
//    /**
//     * 定时任务开关
//     */
//    @Value("${spring.quartz.auto-startup:true}")
//    private boolean taskEnable;
//
//
//    /**
//     * 打标签
//     */
//    @Value("${app.member.job.send-members-cron:'0 0 1 * * ?'}")
//    private String labelCron;
//
//    /**
//     * 同步联系人微信信息
//     */
//    @Value("${app.member.job.wechat-info-sync-cron: 0 0 1 * * ?}")
//    private String wechatInfoSyncCron;
//
//    /**
//     * Quartz 调度器
//     */
//    @Resource
//    private Scheduler scheduler;
//
//    /**
//     * jobGroup名称
//     */
//    private static final String JOB_GROUP_NAME = "member:jobGroup";
//
//    /**
//     * jobName
//     */
//    private static final String JOB_NAME = "MEMBER:sendMembers";
//
//    /**
//     * triggerGroup名称
//     */
//    private static final String TRIGGER_GROUP_NAME = "member:triggerGroup";
//
//    @PostConstruct
//    public void init() {
//        if (!taskEnable) {
//            log.error("[MEMBER] 定时任务未开启");
//            return;
//        }
//
//        if (log.isInfoEnabled()) {
//            log.info("[MEMBER] 初始化定时任务开始");
//        }
//
//        // 联系人自动打标签
//        CronScheduleBuilder labelJobScheduleBuilder = CronScheduleBuilder.cronSchedule(labelCron);
//
//        // 联系人自动同步微信信息
//        final String wechatInfoSyncJobName = "MEMBER:wechatInfoSync";
//        CronScheduleBuilder wechatSyncInfoJobScheduleBuilder = CronScheduleBuilder.cronSchedule(wechatInfoSyncCron);
//
//        // 注册定时任务
//        registerJob(JOB_NAME, JOB_GROUP_NAME, TRIGGER_GROUP_NAME, MemberLabelStatisticJob.class, labelJobScheduleBuilder);
//        registerJob(wechatInfoSyncJobName, JOB_GROUP_NAME, TRIGGER_GROUP_NAME, MemberWechatInfoSyncJob.class, wechatSyncInfoJobScheduleBuilder);
//
//        if (log.isInfoEnabled()) {
//            log.info("[MEMBER] 初始化定时任务完成");
//        }
//    }
//
//    /**
//     * 注册定时任务
//     *
//     * @param name             任务唯一标识; 用于构造 任务名/触发器名
//     * @param jobGroupName     任务组名
//     * @param triggerGroupName 触发器组名
//     * @param jobClass         任务实现类
//     * @param scheduleBuilder  任务对应的调度规则
//     */
//    private void registerJob(String name, String jobGroupName, String triggerGroupName,
//                             Class<? extends Job> jobClass, ScheduleBuilder<CronTrigger> scheduleBuilder) {
//        String jobName = String.format("%s:job", name);
//        String triggerName = String.format("%s:trigger", name);
//
//        TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
//        JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
//
//        try {
//            JobDetail jobDetail = JobBuilder.newJob(jobClass)
//                .withIdentity(jobName, jobGroupName)
//                .storeDurably(true)
//                .requestRecovery(true)
//                .build();
//            Trigger trigger = TriggerBuilder.newTrigger()
//                .startNow()
//                .withIdentity(triggerName, triggerGroupName)
//                .withSchedule(scheduleBuilder)
//                .build();
//
//            if (taskEnable && !scheduler.checkExists(jobKey) && !scheduler.isShutdown()) {
//                scheduler.scheduleJob(jobDetail, trigger);
//                scheduler.start();
//            }
//        } catch (Exception e) {
//            log.error("[OM] 新任务 {}-{} 创建失败; ErrorMsg {}", name, jobClass.getSimpleName(), e.getMessage());
//        }
//    }
//}